import time

from selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.service import Service
import unittest


class MyTestCase(unittest.TestCase):
    driver = None

    @classmethod
    def setUpClass(cls) -> None:
        service = Service(executable_path="../driver/geckodriver.exe")
        cls.driver = webdriver.Firefox(service=service)

    def test_find_element(self):
        """
        测试八种元素定位方式：通过文本值来定位元素
        :return:
        """
        self.driver.get("http://127.0.0.1:8080/testhtml/exam/index.html")

        # LINK_TEXT 精确 的 文本值 搜索
        text = self.driver.find_element(By.LINK_TEXT, "继续提供房源信息")
        text.click()

        time.sleep(2)
        self.driver.back()
        time.sleep(2)

        # LINK_TEXT 模糊 的 文本值 搜索
        text = self.driver.find_element(By.PARTIAL_LINK_TEXT, "继续提供")
        text.click()

        time.sleep(2)
        self.driver.back()
        time.sleep(2)

        # 使用 标签名的元素 定位方式 来进行 元素定位
        text = self.driver.find_element(By.TAG_NAME, "a")
        text.click()

        time.sleep(2)
        self.driver.back()
        time.sleep(2)

        # 使用 Xpath 定位方式 来进行 元素定位
        text = self.driver.find_element(By.XPATH, "//td/a[@target]")
        text.click()

    @classmethod
    def tearDownClass(cls) -> None:
        # cls.driver.close()
        # cls.driver.quit()
        pass


if __name__ == '__main__':
    unittest.main()
